package com.tl.spider.utils.common_utils;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import org.apache.commons.dbcp2.BasicDataSource;

import com.tl.spider.config.Config;

/**
 * 
 * @author Antg
 * @date 2021年7月12日
 * @Description 数据库连接池工具类
 */
public class DBPoolUtils {
	private BasicDataSource bds;
	private static DBPoolUtils poolUtils;

	private DBPoolUtils() {
		bds = new BasicDataSource();
		bds.setDriverClassName(Config.mysql_driver);
		bds.setUrl(Config.mysql_url);
		bds.setUsername(Config.mysql_username);
		bds.setPassword(Config.mysql_password);
	}

	/**
	 * 
	 * @author Antg
	 * @date 2021年7月12日
	 * @param
	 * @return
	 * @Description 为了线程安全,所以使用了加锁的单例模式
	 */
	public static DBPoolUtils getInstance() {
		if (poolUtils == null) {
			synchronized (DBPoolUtils.class) {
				if (poolUtils == null) {
					poolUtils = new DBPoolUtils();
				}
			}
		}
		return poolUtils;
	}

	/**
	 * 
	 * @author Antg
	 * @date 2021年7月12日
	 * @param
	 * @return
	 * @Description 提供一个获取链接对象的方法
	 */
	public BasicDataSource getBasicDataSource() {
		return bds;
	}

	public static void close(Connection conn, Statement stmt) {
		close(conn, stmt, null);
	}

	public static void close(Connection conn, Statement stmt, ResultSet rs) {
		try {
			if (conn != null) {
				conn.close();
			}
			if (stmt != null) {
				stmt.close();
			}
			if (rs != null) {
				rs.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}
